#ifndef LIBRARY_SYSTEM_BOOK_H
#define LIBRARY_SYSTEM_BOOK_H

#include <string>

namespace library {

/**
 * @brief 图书类，表示图书馆中的一本书
 */
class Book {
private:
    int id;                 // 图书唯一标识符
    std::string name;       // 图书名称
    std::string author;     // 作者姓名
    int totalStock;         // 图书总库存量
    int currentStock;       // 当前可借数量

public:
    /**
     * @brief 构造函数，初始化一本新书
     * @param id 图书ID
     * @param name 图书名称
     * @param author 作者姓名
     * @param stock 初始库存量
     */
    Book(int id, const std::string& name, const std::string& author, int stock);
    
    // Getter方法，用于获取私有成员变量的值
    int getId() const { return id; }                        // 获取图书ID
    std::string getName() const { return name; }            // 获取图书名称
    std::string getAuthor() const { return author; }        // 获取作者姓名
    int getTotalStock() const { return totalStock; }        // 获取总库存量
    int getCurrentStock() const { return currentStock; }    // 获取当前库存量
    
    // Setter方法，用于修改私有成员变量的值
    void setName(const std::string& name) { this->name = name; }          // 设置图书名称
    void setAuthor(const std::string& author) { this->author = author; }  // 设置作者姓名
    void setTotalStock(int stock);                                        // 设置总库存量
    
    /**
     * @brief 借出图书
     * @param quantity 借出数量
     * @return 是否借出成功
     */
    bool borrow(int quantity);
    
    /**
     * @brief 归还图书
     * @param quantity 归还数量
     * @return 是否归还成功
     */
    bool returnBook(int quantity);
    
    /**
     * @brief 将图书信息转换为字符串，用于保存到文件
     * @return 包含图书信息的字符串，格式：id,name,author,totalStock,currentStock
     */
    std::string toString() const;
};

} // namespace library

#endif // LIBRARY_SYSTEM_BOOK_H 